Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
¿Cómo reaccionar a los cambios de ruta en Vue 3, API de composición de "configuración de script"?

Este es un ejemplo de rutas que tengo en mi aplicación:

 { path: "/something", name: "SomeRoute", component: SomeComponent, meta: {showExtra: true}, }, { path: "/somethingElse", name: "SomeOtherRoute", component: SomeOtherComponent, },

Luego tengo el siguiente componente, que como notará tiene dos etiquetas de script , una con API de composición y otra sin:

 <template> <div> This will always be visible. Also here's a number: {{ number }} </div> <div v-if="showExtra"> This will be hidden in some routes. </div> </template> <script setup lang="ts"> import type { RouteLocationNormalized } from "vue-router" import { ref } from "vue" const number = 5 const showExtra = ref(true) const onRouteChange = (to: RouteLocationNormalized) => { showExtra.value = !!to.meta?.showExtra } </script> <script lang="ts"> import { defineComponent } from "vue" export default defineComponent({ watch: { $route: { handler: "onRouteChange", flush: "pre", immediate: true, deep: true, }, }, }) </script>

Esto funciona correctamente: cuando ingreso una ruta con meta: {showExtra: false} oculta el div adicional, de lo contrario, lo muestra.

Sin embargo, lo que quiero hacer es lograr lo mismo usando solo la API de composición, en otras palabras, eliminando la segunda etiqueta <script> por completo. He intentado esto:

 <script setup lang="ts"> import type { RouteLocationNormalized } from "vue-router" import { ref } from "vue" import { onBeforeRouteUpdate } from "vue-router" // ... // same as before // ... onBeforeRouteUpdate(onRouteChange) </script>

Pero esto no tendrá el efecto esperado cuando cambie de ruta. Soy consciente de la función de watch que podría importar, pero no estoy seguro de cómo obtener la metainformación sobre la ruta y cómo apaciguar al verificador de tipos.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede convertir su observador en una API de composición importando el método de watch desde vue

 <script lang="ts"> import { defineComponent, vue } from "vue" import { useRoute } from "vuex" export default defineComponent({ setup() { const route = useRoute() watch(route, (to) => { showExtra.value = !!to.meta?.showExtra }, {flush: 'pre', immediate: true, deep: true}) }, }) </script>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda